from strategy.StrategyTemplate import StrategyTemplate
from resource.jsl_data_map import default_columns
from strategy import strategy_filter


class ThreeLowRollWeek(StrategyTemplate):
    """
    三低轮动策略

    120-150元
    规模小于2.5亿
    溢价率小于35%
    价格从低到高排序
    前十名周轮动
    """
    def __init__(self):
        super(self.__class__, self).__init__()
        self.strategy_name = "大白话三低周轮动策略"
        self.strategy_descrption = "周轮动"
    def run(self):
        # 基础过滤，过滤掉新债、强赎、EB
        self.data = strategy_filter.filter_base(self.data)
        self.data = self.data.loc[self.data['剩余规模'] < 2.5]
        self.data = self.data.loc[self.data['溢价率'] < 35]
        self.data = self.data.loc[((self.data['现价'] < 150) & (self.data['现价'] > 120))]
        self.data['总转股价值'] = self.data['转股价值'] * self.data['剩余规模']
        self.data = self.data.sort_values(by='现价', ascending=True)
        self.data = self.data[['转债名称', '转债代码', '现价', '涨跌幅', '溢价率', '剩余年限', '转股价值',
                               '剩余规模', '总转股价值','强赎状态', '行业', '正股波动率', '基金持仓','成交额']]
        # 清掉原来的索引
        # self.data_tool.reset_index(inplace=True, drop=True)
        # self.data_tool.to_excel('20230607三低轮动强化.xlsx')

class NetTrade(StrategyTemplate):
    """
    网格交易策略策略

    价格120-135元
    成交额大于 2个亿
    """
    def __init__(self):
        super(self.__class__, self).__init__()
        self.strategy_name = "大白话网格交易策略策略"
        self.strategy_descrption = "周轮动"
    def run(self):
        # 基础过滤，过滤掉新债、强赎、EB
        self.data = strategy_filter.filter_base(self.data)
        self.data = self.data.loc[self.data['成交额'] > 20000]
        self.data = self.data.loc[((self.data['现价'] < 135) & (self.data['现价'] > 120))]
        self.data = self.data.sort_values(by='成交额', ascending=False)
        self.data = self.data[['转债名称', '转债代码', '现价', '涨跌幅', '溢价率', '剩余年限', '转股价值',
                               '剩余规模', '强赎状态', '行业', '正股波动率', '基金持仓','成交额']]
        # 清掉原来的索引
        # self.data_tool.reset_index(inplace=True, drop=True)
        # self.data_tool.to_excel('20230607三低轮动强化.xlsx')
def bondPre():
    """
    配债
    """
    def __init__(self):
        super(self.__class__, self).__init__()
        self.strategy_name = "大白话网格交易策略策略"
        self.strategy_descrption = "周轮动"
    def run(self):
        # 基础过滤，过滤掉新债、强赎、EB
        self.data = strategy_filter.filter_base(self.data)
        self.data = self.data.loc[self.data['成交额'] > 20000]
        self.data = self.data.loc[((self.data['现价'] < 135) & (self.data['现价'] > 120))]
        self.data = self.data.sort_values(by='成交额', ascending=False)
        self.data = self.data[['转债名称', '转债代码', '现价', '涨跌幅', '溢价率', '剩余年限', '转股价值',
                               '剩余规模', '强赎状态', '行业', '正股波动率', '基金持仓','成交额']]
        # 清掉原来的索引
        # self.data_tool.reset_index(inplace=True, drop=True)
        # self.data_tool.to_excel('20230607三低轮动强化.xlsx')
if __name__ == '__main__':
    '''
    ins = ThreeLowRollWeek()
    ins.topN = -1
    ins.test()
    '''
    ins = NetTrade()
    ins.topN = -1
    ins.test()
    ins.data.to_excel('网格交易.xlsx')